package com.wlz.thread;

import com.google.common.collect.Lists;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * @author wlz
 * @date 2023-01-13  11:26 上午
 */
public class CompletableFutureTest {

//    public static void main(String[] args) {
//        int pageSize = ids.size() > 8 ? ids.size() >> 3 : 1;
//        List<List<Long>> partitionIdList = Lists.partition(ids, pageSize);
//        List<CompletableFuture<?>> futures = new ArrayList<>();
//        //如果ids为500，这里会分隔成9份，也就是partitionIdList.size()=9；遍历9次,也相当于创建了9个CompletableFuture对象，前8个CompletableFuture对象处理62个数据。第9个处理4个数据。
//        partitionIdList.forEach(partitionIds -> {
//            List<BasicInfo> basicInfoList = new ArrayList<>();
//            CompletableFuture<List<BasicInfo>> future = CompletableFuture.supplyAsync(() -> {
//                partitionIds.forEach(id -> {
//                    getBasicData(basicInfoList, id);
//                });
//                return basicInfoList;
//            });
//            futures.add(future);
//        });
//
//        List<BasicInfo> list = new ArrayList<>();
//        list.forEach(basicInfo -> {
//            CompletableFuture<BasicInfo> future = CompletableFuture.supplyAsync(() -> {
//                return null;
//            });
//        });
//
//
//
//        // 把所有线程执行的结果进行汇总
//        List<BasicInfo> basicInfoResult = new ArrayList<>();
//        for (CompletableFuture<?> future : futures) {
//            try {
//                basicInfoResult.addAll((List<BasicInfo>) future.get());
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//
//    }
}
